In the course of software development, hundreds or even thousands of software components may be created for a single software application or system. These components, each consisting of the properly formatted syntax of a computer programming language, must be transformed from their human-readable source code format to an executable format. In the example of a software application written in a compiled language such as C++, for example, this transformation process includes compiling multiple source-code program modules into corresponding pieces of machine readable object code, linking these pieces of object code into a single executable file, and loading this executable into a host machine's execution space as will be clear to those of ordinary skill in the art. In a large software system, more than one such executable file, each a component of the overall system, may be employed. The process of transforming a collection of one or more software components from their human-readable format to an executable format is referred to herein as code promotion.
Code promotion may be automated through the execution of software designed to carryout the transformation process. For instance, a batch program may be designed to promote code in a serial manner (also referred to herein as “synchronous” or “linear”). Following a serial method, one component is completely processed before the next is begun. Such serial code promotion is employed by prior art source and configuration management products, and products which maintain audit trails for program source changes. One shortcoming of serial code promotion techniques is that they fail to efficiently utilize processor time during execution. Accordingly, executing code promotion in a serial fashion can be time intensive. Consequently, there is a need for methods and apparatus that perform code promotion in a more time efficient manner.